"use strict";

const Service = require("egg").Service;

class ProductImageService extends Service {
  /**
   * 获取商品图片列表
   * @param {Number} productId 商品ID
   * @returns {Promise<Array>} 商品图片列表
   */
  async getListByProductId(productId) {
    return this.ctx.model.ProductImage.findAll({
      where: { product_id: productId },
      order: [["sort_order", "ASC"]],
    });
  }

  /**
   * 创建商品图片
   * @param {Number} productId 商品ID
   * @param {Array} images 图片URL数组
   * @returns {Promise<Array>} 创建结果
   */
  async create(productId, images) {
    const imageList = images.map((image, index) => ({
      product_id: productId,
      image_url: image,
      sort_order: index,
    }));

    return this.ctx.model.ProductImage.bulkCreate(imageList);
  }

  /**
   * 更新商品图片
   * @param {Number} id 图片ID
   * @param {Object} data 图片数据
   * @returns {Promise<Number>} 更新结果
   */
  async update(id, data) {
    return this.ctx.model.ProductImage.update(data, {
      where: { id },
    });
  }

  /**
   * 删除商品图片
   * @param {Number} id 图片ID
   * @returns {Promise<Number>} 删除结果
   */
  async delete(id) {
    return this.ctx.model.ProductImage.destroy({
      where: { id },
    });
  }

  /**
   * 批量删除商品图片
   * @param {Array} ids 图片ID数组
   * @returns {Promise<Number>} 删除结果
   */
  async batchDelete(ids) {
    return this.ctx.model.ProductImage.destroy({
      where: { id: ids },
    });
  }
}

module.exports = ProductImageService;
